/**
 * \file placement.h
 * \brief Placement des unites a la creation de la partie
 * \author ARTUR Vincent
 * \author LAPERDRIX Pierre
 * \version 1.0
 */

#ifdef WANTDLLEXP
#define DLL _declspec(dllexport)
#define EXTERNC extern "C"
#else
#define DLL
#define EXTERNC
#endif


#include <ctime>
#include <cstdlib>
#include <cstdio>
#include <iostream>

/**
 * \class Placement
 * \brief Classe gerant le placement des unites sur la carte a la creation de la partie
 */
class DLL Placement{

public:

	/**
	 * \fn Placement()
	 * \brief Constructeur de Placement
	 */
	Placement();

	/**
	 * \fn ~Placement()
	 * \brief Destructeur de Placement
	 */
	~Placement();

	/**
	 * \fn int* placer(int numJoueur, int nbJoueur, int taille)
	 * \brief Calcul du placement des unites sur la carte
	 * \param numJoueur le numero du joueur
	 * \param nbJoueur le nombre de joueurs de la partie
	 * \param taille la taille de la carte
	 * \return un tableau contenant le placement de la premiere unite
	 */
	int* placer(int numJoueur, int nbJoueur, int taille);

};

/**
 * \fn Placement* Placement_new()
 * \brief Methode utilisee par la DLL pour creer un nouvel objet de type Placement
 * \return un pointeur sur un nouvel objet de type Placement
 */
EXTERNC DLL Placement* Placement_new();

/**
 * \fn void Placement_delete(Placement* plac)
 * \brief Methode utilisee par la DLL pour detruire un objet de type Placement
 * \param plac un pointeur sur l'objet a detruire
 */
EXTERNC DLL void Placement_delete(Placement* plac);

/**
 * \fn int* Placement_placer(Placement* plac, int numJoueur, int nbJoueur, int taille)
 * \brief Methode utilisee par la DLL pour placer les unites sur la carte au debut de la partie
 * \param numJoueur le numero du joueur
 * \param nbJoueur le nombre de joueurs de la partie
 * \param taille la taille de la carte
 * \return un tableau contenant le placement de la premiere unite
 */
EXTERNC DLL int* Placement_placer(Placement* plac, int numJoueur, int nbJoueur, int taille);